草庐IT

Java HotSpot 枚举开销

全部标签

java - 如何定义枚举项的属性

我已阅读问题DifferenceofEnumbetweenjavaandC++?但我还是一头雾水。我希望以下返回相关的字符串:publicenumChecker{EMPTY("Empty"),RED("Red"),YELLOW("Yellow");}根据我的阅读,这应该是可能的。只是希望您对如何实现它有所了解。 最佳答案 简答您需要一个构造函数、一个字段和一个getter。构造函数枚举类型可以有构造函数,前提是它们的访问级别是私有(private)的或默认的(包私有(private))。您不能直接调用这些构造函数,除非在枚举声明本身

java - 遍历 hastable 键的枚举会引发 NoSuchElementException 错误

我正在尝试使用枚举从哈希表中迭代一个键列表,但是我在列表中的最后一个键处不断收到NoSuchElementException?Hashtablevars=newHashtable();vars.put("POSTCODE","TU13ZU");vars.put("EMAIL","job.blogs@lumesse.com");vars.put("DOB","02Mar1983");Enumeratione=vars.keys();while(e.hasMoreElements()){System.out.println(e.nextElement());Stringparam=(Str

java - 遍历 hastable 键的枚举会引发 NoSuchElementException 错误

我正在尝试使用枚举从哈希表中迭代一个键列表,但是我在列表中的最后一个键处不断收到NoSuchElementException?Hashtablevars=newHashtable();vars.put("POSTCODE","TU13ZU");vars.put("EMAIL","job.blogs@lumesse.com");vars.put("DOB","02Mar1983");Enumeratione=vars.keys();while(e.hasMoreElements()){System.out.println(e.nextElement());Stringparam=(Str

java - 我可以在 Java 运行时添加和删除枚举元素吗

可以在运行时从Java中的枚举中添加和删除元素吗?例如,我可以从文件中读取枚举的标签和构造函数参数吗?@saua,这只是一个是否真的可以出于兴趣而做的问题。我希望有一些巧妙的方法来改变正在运行的字节码,也许使用BCEL或者其他的东西。我也跟进了thisquestion因为我意识到我不完全确定什么时候应该使用枚举。如果我希望能够在运行时安全地更改内容,我非常相信正确的答案是使用确保唯一性的集合而不是枚举。 最佳答案 不,枚举应该是一个完整的静态枚举。在编译时,您可能希望从另一个源文件生成枚举.java文件。你甚至可以像这样创建一个.c

java - 我可以在 Java 运行时添加和删除枚举元素吗

可以在运行时从Java中的枚举中添加和删除元素吗?例如,我可以从文件中读取枚举的标签和构造函数参数吗?@saua,这只是一个是否真的可以出于兴趣而做的问题。我希望有一些巧妙的方法来改变正在运行的字节码,也许使用BCEL或者其他的东西。我也跟进了thisquestion因为我意识到我不完全确定什么时候应该使用枚举。如果我希望能够在运行时安全地更改内容,我非常相信正确的答案是使用确保唯一性的集合而不是枚举。 最佳答案 不,枚举应该是一个完整的静态枚举。在编译时,您可能希望从另一个源文件生成枚举.java文件。你甚至可以像这样创建一个.c

java - 枚举名称是否在 Java 中实习?

枚举名称是否在Java中实习?即是否保证enum1.name()==enum2.name()在同名的情况下?将enum.name()与保证被实习的字符串进行比较是否安全。 最佳答案 尽管对此没有明确的保证,但最终结果必然是对于具有相同名称的enum常量的比较总是成功的:enumA{enum1};enumB{enum1};System.out.println(A.enum1.name()==B.enum1.name());//Prints"true"原因是Java编译器构造Enum的子类,最终调用Enum的唯一protected构造函

java - 枚举名称是否在 Java 中实习?

枚举名称是否在Java中实习?即是否保证enum1.name()==enum2.name()在同名的情况下?将enum.name()与保证被实习的字符串进行比较是否安全。 最佳答案 尽管对此没有明确的保证,但最终结果必然是对于具有相同名称的enum常量的比较总是成功的:enumA{enum1};enumB{enum1};System.out.println(A.enum1.name()==B.enum1.name());//Prints"true"原因是Java编译器构造Enum的子类,最终调用Enum的唯一protected构造函

java - 自定义枚举也是可序列化的吗?

我了解Enum是可序列化的。因此,这样做是安全的。(selectedCountry是枚举国家)没有客户成员变量的原始枚举publicenumCountry{Australia,Austria,UnitedState;}fragment@OverridepublicvoidonActivityCreated(BundlesavedInstanceState){super.onActivityCreated(savedInstanceState);if(savedInstanceState!=null){selectedCountry=(Country)savedInstanceState

java - 自定义枚举也是可序列化的吗?

我了解Enum是可序列化的。因此,这样做是安全的。(selectedCountry是枚举国家)没有客户成员变量的原始枚举publicenumCountry{Australia,Austria,UnitedState;}fragment@OverridepublicvoidonActivityCreated(BundlesavedInstanceState){super.onActivityCreated(savedInstanceState);if(savedInstanceState!=null){selectedCountry=(Country)savedInstanceState

java - 在枚举中实现内部接口(interface)时的循环继承

我有以下实现会导致编译器错误:publicenumFusionStatimplementsMonsterStatBuilderHelper{ATTACK{@OverridepublicMonsterCard.MonsterCardBuildersafeCreateBuilder(finalMonsterCardbaseMonsterCard,finalMonsterCardfusedMonsterCard,finalFusionCardfusionCard){Objects.requireNonNull(baseMonsterCard);Objects.requireNonNull(f